#include"liste.h"
#include<stdio.h>
#include<stdlib.h>


void initialiser(Liste *L)
{
	L->adPremiere=NULL;
}

void testament(Liste *L)
{
	Cellule *temp=NULL;
	while(L->adPremiere!=NULL)
	{
		temp = L->adPremiere;
		L->adPremiere=(L->adPremiere)->suivent;
		free(temp);
	}
}

int estVide(Liste L)
{
	if(L.adPremiere==NULL)
		return -1;
	else
		return 1;
}

void afficher(Liste L)
{
	while(L.adPremiere!=NULL)
	{
		printf(" %s",(L.adPremiere)->cnom);
		printf(" %s",(L.adPremiere)->cprenom);
		printf(" %d",(L.adPremiere)->iannais);
		printf(" %d",(L.adPremiere)->csock);
		
		printf("\n\n");
		
		L.adPremiere=(L.adPremiere)->suivent;
	}
}

void ajouterEnQueue(Liste *L,int iannais,char cmail[],char cmot_de_pass[],char cnom[],char cprenom[],SOCKET  csock)
{
	Cellule *temp;

	if(L->adPremiere==NULL)
	{
		L->adPremiere=(Cellule *)malloc(sizeof(Cellule));
		(L->adPremiere)->suivent=NULL;
		
		(L->adPremiere)->csock=csock;/*on initialise la soket client*/
		(L->adPremiere)->iannais=iannais;
		strcpy((L->adPremiere)->cmail,cmail);
		strcpy((L->adPremiere)->cmot_de_pass,cmot_de_pass);
		strcpy((L->adPremiere)->cnom,cnom);
		strcpy((L->adPremiere)->cprenom,cprenom);

	}
	else
	{
		temp=L->adPremiere;
		while(temp->suivent!=NULL)
			temp=temp->suivent;
		
		temp->suivent=(Cellule *)malloc(sizeof(Cellule));
		(temp->suivent)->suivent=NULL;
		
		(temp->suivent)->csock=csock;/*on initialise la soket client*/
		(temp->suivent)->iannais=iannais;
		strcpy((temp->suivent)->cmail,cmail);
		strcpy((temp->suivent)->cmot_de_pass,cmot_de_pass);
		strcpy((temp->suivent)->cnom,cnom);
		strcpy((temp->suivent)->cprenom,cprenom);
	}
}

int testMailValide(Liste L,char cmail[])
{
	while(L.adPremiere!=NULL)
	{		
		if(strncmp(cmail,(L.adPremiere)->cmail,strlen((L.adPremiere)->cmail) -1) == 0)
			return 1;/*Le mail existe dans la base*/
		L.adPremiere=(L.adPremiere)->suivent;
	}
	return 0;/*le mail nexite pas dans la base*/
}

int testPasswdMailValide(Liste L,char cmot_de_pass[],char cmail[],SOCKET  csock)
{

	while(L.adPremiere!=NULL)
	{
		if(strncmp(cmot_de_pass,(L.adPremiere)->cmot_de_pass,strlen((L.adPremiere)->cmot_de_pass) - 1) == 0)
			if(strncmp(cmail,(L.adPremiere)->cmail,strlen((L.adPremiere)->cmail) -1) == 0)
			{
				(L.adPremiere)->csock=csock;/*on initialise la soket client*/
				return 1;/*Le passwd et le mail existe dans la base*/
			}
		L.adPremiere=(L.adPremiere)->suivent;
	}
	return 0;/*le mail nexite pas dans la base*/
}

pthread_t rechercheThread(const Liste *L,SOCKET  csock)
{
	Liste l;/*on cree une liste de travaille*/
	l = *L;
	
	while(l.adPremiere!=NULL)
	{
		if((l.adPremiere)->csock == csock)
			return (l.adPremiere)->thread;
		
		l.adPremiere=(l.adPremiere)->suivent;
	}
	return 0;
}






























